home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr47 / wasm223.zip / VIDEO5.ASM < prev    next >
Assembly Source File  |  1993-05-04  |  3KB  |  114 lines

  1. ;***************************************;
  2. ; WASM Video Module, Write Routines     ;
  3. ; By Eric Tauck                         ;
  4. ;                                       ;
  5. ; Defines:                              ;
  6. ;                                       ;
  7. ;   WrtChr   write a character          ;
  8. ;   WrtChrs  write multiple characters  ;
  9. ;   WrtStr   write a string             ;
  10. ;   WrtStrc  write a string with length ;
  11. ;                                       ;
  12. ; Requires:                             ;
  13. ;                                       ;
  14. ;   VIDEO1.ASM                          ;
  15. ;***************************************;
  16.  
  17.         jmps    _video5_end
  18.  
  19. ;========================================
  20. ; Write a character.
  21. ;
  22. ; In: AL= character.
  23.  
  24. WrtChr  PROC    NEAR
  25.         mov     _vid_curadv, 1  ;save advance length
  26.         push    di
  27.         push    es
  28.         mov     ah, _vid_attr   ;load attribute
  29.         les     di, _vid_addr   ;load address
  30.         cld
  31.         stosw                   ;store character/attribute
  32.         pop     es
  33.         pop     di
  34.         ret
  35.         ENDP
  36.  
  37. ;========================================
  38. ; Write multiple characters.
  39. ;
  40. ; In: AL= character; CL= count.
  41.  
  42. WrtChrs PROC    NEAR
  43.         mov     _vid_curadv, cl ;save advance length
  44.         sub     ch, ch
  45.         push    di
  46.         push    es
  47.         mov     ah, _vid_attr   ;load attribute
  48.         sub     ch, ch          ;zero CH
  49.         les     di, _vid_addr   ;load address
  50.         cld
  51.         rep                     ;for count
  52.         stosw                   ;store characters/attributes
  53.         pop     es
  54.         pop     di
  55.         ret
  56.         ENDP
  57.  
  58. ;========================================
  59. ; Write an ASCIIZ string.
  60. ;
  61. ; In: AX= offset.
  62. ;
  63. ; Out: CL= string length.
  64.  
  65. WrtStr  PROC    NEAR
  66.         sub     cl, cl          ;zero CL
  67.         push    di
  68.         push    si
  69.         push    es
  70.         les     di, _vid_addr   ;load address
  71.         mov     si, ax          ;put source in SI
  72.         mov     ah, _vid_attr   ;load attribute
  73.         cld
  74.         jmps    _wtstz2         ;enter loop
  75. _wtstz1 stosw                   ;store character/attribute
  76.         inc     cl              ;increment length
  77. _wtstz2 lodsb                   ;load character
  78.         or      al, al          ;check if end of string
  79.         jnz     _wtstz1         ;loop back if not
  80.         pop     es
  81.         pop     si
  82.         pop     di
  83.         mov     _vid_curadv, cl ;save advance length
  84.         ret
  85.         ENDP
  86.  
  87. ;========================================
  88. ; Write a string.
  89. ;
  90. ; In: AX= offset; CL= length.
  91.  
  92. WrtStrc PROC    NEAR
  93.         mov     _vid_curadv, cl ;save advance length
  94.         sub     ch, ch
  95.         jcxz    _wtstr2         ;exit if zero characters
  96.         push    di
  97.         push    si
  98.         push    es
  99.         sub     ch, ch          ;zero CH
  100.         les     di, _vid_addr   ;load address
  101.         mov     si, ax          ;put source in SI
  102.         mov     ah, _vid_attr   ;load attribute
  103.         cld
  104. _wtstr1 lodsb                   ;load character
  105.         stosw                   ;store character/attribute
  106.         loop    _wtstr1         ;loop for each character
  107.         pop     es
  108.         pop     si
  109.         pop     di
  110. _wtstr2 ret
  111.         ENDP
  112.  
  113. _video5_end
  114.